<?php
	class Calendrier {
		public $months = array("Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
		public $days = array("Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche");
		
		public function getAllDates($year,$month='01'){
			
			//echo $year.'-'.$month.'-1';
			$date = new DateTime($year.'-'.$month.'-1');
			$r = array();
				while($date->format('Y') <= $year && $date->format('m') == $month){
					$y = $date->format('Y');
					$m = $date->format('n');
					$d = $date->format('j');
					$w = str_replace('0','7',$date->format('w'));
					$r[$y][$m][$d] = $w;
					$date->add(new DateInterval('P1D'));
				}
				
				return $r;
		}
		
		public function getEvent(){
			global $pdo;
				$query = $pdo->query("SELECT * FROM calendrier_event");
					$r = array();
					
						foreach($query->fetchAll(PDO::FETCH_OBJ) as $event){
							//$ex = explode('/',$event->event_date);
								//$strdate = (isset($ex[2])) ? ($ex[2] . "-" . $ex[1] . "-" . $ex[0]) : ($ex[1] . "-" . $ex[0]);
							if($event->event_type>=1){
								if(isset($r[$event->event_type][$event->event_date]))
									$r[$event->event_type][$event->event_date] .= $event->event_name . "\r----------\r" . $event->event_text . "\r_________________________________________\r\r"; 
								else
									$r[$event->event_type][$event->event_date] = $event->event_name . "\r----------\r" . $event->event_text . "\r_________________________________________\r\r"; 
							}
								else
							{
								if(isset($r[$event->event_type][$event->event_date]))
									$r[$event->event_type][$event->event_date] .= $event->event_name . "\r_________________________________________\r\r"; 
								else
									$r[$event->event_type][$event->event_date] = $event->event_name . "\r_________________________________________\r\r";
							}
						}
					return $r;

		}

		public function getDateSortie(){
			global $pdo;
				$query = $pdo->prepare("SELECT *,DATE_FORMAT(dateSortie,'%d/%m/%Y') as dateSortie,DATE_FORMAT(dateSortie,'%H:%i:%s') as heureSortie FROM activite_sortie WHERE (membreInscrit REGEXP :mid) OR organisateur=:mid");
				$query->execute(array("mid"=>(isset($_SESSION['id']) ? $_SESSION['id'] : -1)));
				
					$r = array();
					
						foreach($query->fetchAll(PDO::FETCH_OBJ) as $sortie){
							//$ex = explode('/',$event->event_date);
								//$strdate = (isset($ex[2])) ? ($ex[2] . "-" . $ex[1] . "-" . $ex[0]) : ($ex[1] . "-" . $ex[0]);
								
							if(isset($r[$sortie->dateSortie]))
							$r[$sortie->dateSortie] .= "Nom de la sortie : " . $sortie->titreSortie . "Lieu de rendez-vous : " . $sortie->lieu . "Organisé par " . id2pseudo($sortie->organisateur) ."\rHeure du rendez-vous : " . $sortie->heureSortie . "\r\r"; 
								else
							$r[$sortie->dateSortie] = "Nom de la sortie : " . $sortie->titreSortie . "Lieu de rendez-vous : " . $sortie->lieu . "Organisé par " . id2pseudo($sortie->organisateur) ."\rHeure du rendez-vous : " . $sortie->heureSortie . "\r\r"; 
						}
					return $r;
		}
		
		public function getBirthdayMember(){
			global $pdo;
				$query = $pdo->prepare("SELECT membre_date_de_naissance,membre_pseudo,ami_from,ami_to FROM forum_amis JOIN forum_membres ON membre_id=ami_from OR membre_id=ami_to WHERE ami_from=:mid OR ami_to=:mid GROUP BY membre_pseudo");
				$query->execute(array("mid"=>(isset($_SESSION['id']) ? $_SESSION['id'] : -1)));
				
					$r = array();
					
						foreach($query->fetchAll(PDO::FETCH_OBJ) as $birthday){
							//$ex = explode('/',$event->event_date);
								//$strdate = (isset($ex[2])) ? ($ex[2] . "-" . $ex[1] . "-" . $ex[0]) : ($ex[1] . "-" . $ex[0]);
								$ex = explode('/',$birthday->membre_date_de_naissance);
								
									if(substr($ex[0],0,1)=='0'){
										$ex[0] = substr($ex[0],1);
									}
									$strdate = $ex[0] . "/" . $ex[1];
									
								if(isset($r[$strdate]))
									$r[$strdate] .= "Anniversaire de : " . $birthday->membre_pseudo . "\r";
								else
									$r[$strdate] = "Anniversaire de : " . $birthday->membre_pseudo . "\r";
									
						}
						
						
					return $r;
		}
		
		public function __toString(){
			global $pdo;
			$year = (!isset($_GET['annee'])) ? date('Y') : intval($_GET['annee']);
			$month = (!isset($_GET['mois'])) ? date('m') : intval($_GET['mois']);
			
				if(isset($_GET['mois']) && ($_GET['mois'] < 1 || $_GET['mois'] > 12))
				{
					$year = 0;
					$month = 0;
				}	
				
			//récupération des dates entiere du mois et de l'année renseigné
			$dates = $this->getAllDates($year,$month);
			
			//Chargement des event et sorites à afficher sur le calendrier
			$events = $this->getEvent();
			$sorties = $this->getDateSortie();
			$birthday = $this->getBirthdayMember();
				//On passe le premier tableau multi-dimentionnel
				$dates = current($dates);
				
				//Return result
				$r = '<a name="caldate"></a>';
				
		
					if(is_array($dates) > 0){
						foreach($dates as $m=>$days){
							
							//Module index car le calendrier est sur index, à modifier seulement ça si le calendrier devait se retrouver
							//sur une page autre que index getLienModule(modulePathName[,fileName = 'index']);
							$headerLink = getLienModule("index");
							
							if($m==12){
								$nextMonth = '?annee=' . ($year+1) . '&mois=1#caldate';
								$lastMonth = '?annee=' . $year . '&mois=' . ($m-1).'#caldate';
							}elseif($m==1){
								$nextMonth = '?annee=' . ($year) . '&mois=' . ($m+1).'#caldate';
								$lastMonth = '?annee=' . ($year-1) . '&mois=12#caldate';	
							}else{
								$nextMonth = '?annee=' . ($year) . '&mois=' . ($m+1) . '#caldate';
								$lastMonth = '?annee=' . ($year) . '&mois=' . ($m-1) . '#caldate';
							}
							
							$width = 50;
							$height = 25;
							$dirImageCalendar = DIR_DESIGN . '/' .getDesignName().'/images/Calendrier';
							$r .= '<div class="cadre_visible contenu">';
							       	     			// ici on affiche un texte en hut de la page pour le changer c'esty dans modules/titre.php
$r .= '' . Titre_calendrier . '';


							$r .= '<div class="calendrier_suivant_precedent parente">
							
							<div class="mois_precedent_sivant"><a href="'.$headerLink.'?annee='.($year-1).'&amp;mois='.$m.'" title="Année précédente"><img src="'.$dirImageCalendar.'/currentYearLessOne.png" title="" width="'.$width.'" height="'.$height.'" border="0" /></a>
							<a href="'.$headerLink.$lastMonth.'" title="Mois précédent"><img src="'.$dirImageCalendar.'/currentMonthLessOne.png" title="" width="'.$width.'" height="'.$height.'" border="0"/></a></div>
							
							
							
							<div class="mois_annee">' . ($this->months[$m-1] . ' ' . $year) . '</div>
							
							
							
							<div class="mois_precedent_sivant"><a href="'.$headerLink.$nextMonth.'" title="Mois suivant"><img src="'.$dirImageCalendar.'/currentMonthGreaterOne.png" width="'.$width.'" height="'.$height.'" border="0"/></a>
							
							
							<a href="'.$headerLink.'?annee='.($year+1).'&amp;mois='.$m.'" title="Année suivante"><img src="'.$dirImageCalendar.'/currentYearGreaterOne.png" title="" width="'.$width.'" height="'.$height.'" border="0"/></a></div>
							
							</div>';
							$r .= '<div class="jours_calendrier parente">';
 
                                                                        
 
                                                                        foreach($this->days as $d){
 
                                                                                $r .= '<div class="semaine_calendrier">' . substr($d,0,3) . '</div>'."\n";
 
                                                                        }
 
                                                                        
 
                                                        $r .= '</div>
 
                                                                <div class="date_calendrier parente">';
 
                                                                //Récupération du numéro du dernier jour du mois
 
                                                                $end = end($days);
 
                                                                
 
                                                                        foreach($days as $d=>$w){
 
                                                                                
 
                                                                                        if($d == 1&&$w>1){
																				// ici on affiche la class rouge pour ceux qui 'est : avant le 1 du mois
 
                                                                                                for($s=($w-1);$s>0;$s--)
																									$r .= '<div class="avant_apres_jours_calendrier" ></div>'; 
 
                                                                                        }
 
                                                                                
 
                                                                                
 
                                                                                $class = '';
 
                                                                                $format_date_sortie = date("d/m/Y",strtotime($year."-".$m."-".$d));
 
                                                                                
 
                                                                                //Grisage des dates passée
 
                                                                                if($year<date('Y') || ($d<date('j') && $year<=date('Y')) && $m<=date('n') || ($m<date('n') && $year<=date('Y'))){
 																					if($w<6)
																						$class .= ' calendrier_jours_passe';
																					else
                                                                                        $class .= ' calendrier_jours_weekend_passe';
																							
																				}
                                                                                
																				/*if($w>=6)
																						$class .= ' calendrier_jours_ferie';*/
                                                                                //echo "Date : " . $d."/".($m-1);
 
                                                                                //var_dump($event_sortie->rowCount());
 
                                                                        
 
                                                                        $title = '';
 
                                                                        //Event type : 0=ferié , 1=event perso
 
                                                                                if($d==date("j")&&$m==date("n")&&$year==date("Y")){                                             
 
                                                                                        $title = 'Date actuelle'."\r";
 
                                                                                        $class .= ' calendrier_jours_actuel';
 
                                                                                }
 
                                                                                if(isset($events[0][$d."/".$m])){
 
                                                                                        
 
                                                                                        $title .= "[Jour férier] : " . $events[0][$d."/".$m] . "\r";    
 
                                                                                
 
                                                                                }
 
                                                                                
 
                                                                                if(isset($sorties[$format_date_sortie])){
 
                                                                                                $title .= "[Sortie prévue]\r" . $sorties[$format_date_sortie] . "\r";
 
                                                                                                $class .= ' calendrier_jours_sortie';
 
                                                                                                
 
                                                                                                
 
                                                                                }
 
                                                                                
 
                                                                                
 
                                                                                        
 
                                                                                
 
                                                                                for($i=1;$i<count($events);$i++){
 
                                                                                        if(isset($events[$i][$d."/".$m."/".$year]) || isset($events[1][$d."/".$m])){
 
                                                                                        
 
                                                                                                $evt = $events[$i][$d."/".$m."/".$year];
 
                                                                                        
 
                                                                                                        if(!empty($evt)){
 
                                                                                                                $title .= "[Evenement]\r" . $evt . "\r";
 
                                                                                                                $class .= ' calendrier_jours_event';
 
                                                                                                        }
 
                                                                                        }
 
                                                                        
 
                                                                                        if(isset($events[$i][$d."/".$m])){
 
                                                                                                $evt = $events[$i][$d."/".$m];
 
                                                                                                        if(!empty($evt)){
 
                                                                                                                $title .= "[Evenement]\r" . $evt . "\r";
 
                                                                                                                $class .= ' calendrier_jours_event';
 
                                                                                                        }
 
                                                                                        }
 
                                                                                
 
                                                                                }
 
                                                                                
 
                                                                                if(isset($birthday[$d."/".$m])){
 
                                                                                                $title .= "[Anniversaire]\r" . $birthday[$d."/".$m];
 
                                                                                                $class .= ' calendrier_jours_birthday';
 
                                                                                }
 
                                                                                
 
                                                                                

                                                                                if($w >= 6 || (isset($events[0][$d."/".$m]) || isset($events[0][$d."/".$m."/".$year]))){
 
                                                                                        if($w>=6)
 
                                                                                        $title .= "[Week end] : C'est le week end, profité en un max ;-)";
 
																				
																				// ici on affiche la class rouge pour ceux qui 'est : samedi dimanche les jours férier 
 
 
                                                                                        $r .= '<div class="calendrier_jours calendrier_jours_ferie'.$class.'" title="'.$title.'"><a title="'.$title.'">' . $d . '</a></div>';       
 
                                                                                }
 
                                                                                elseif($w < 6)  
																				
																				// ici on affiche la class vert pour ceux qui 'est : tout les jours sauf pour les jours suivant, samedi dimanche les jours férier 
																				
                                                                                        $r .= '<div  class="calendrier_jours'.$class.'" title="'.$title.'">' . $d . '</div>';
 
                                                                                
 
                                                                                
 
                                                                                
 
                                                                                
 
                                                                                
 
                                                                                        if($w==7){
 
                                                                                                $r .= '';      
 
                                                                                        }
 
                                                                                        
 
                                                                                        
 
                                                                        }
 
                                                                        
 
                                                                                if($end != 7){
																				
																				// ici on affiche la class rouge pour ceux qui 'est : aprés le 30 ou 31 dui mois
 
                                                                                        for($s2=(7-$end);$s2>0;$s2--)
																							$r .= '<div class="avant_apres_jours_calendrier"></div>';
 
                                                                                }
 
                                                                
 
                                                                $r .= '</div></div>';
						}
					}else{
						$r = 'Impossible de charger les données du calendrier à la date demandée !';
					}
				return $r;	
		}
	}
?>
